linked list implementation of queues